#ifndef __CoreEventManager__h__included__
#define __CoreEventManager__h__included__

#include "neiderra/core/Base.h"

#include <queue>

using namespace neiderra::core;

namespace neiderra { 
	namespace gui { 

		namespace events
		{
			struct iGUIEvent;
		}
		using events::iGUIEvent;
		
		// Abstract internal event manager
		class EventManager: public Base {
		public:
			EventManager(Core* core);
			virtual ~EventManager();
		
			// Sends event into the system queue
			virtual void pushEvent(iGUIEvent*);
			// Extracts next event from event queue
			virtual iGUIEvent* nextEvent();
		
		protected:
			std::queue<iGUIEvent*> events_;
		};

	}
}

#endif
